package com.geeklan.smart.utils;

import android.text.TextUtils;

public class VersionComparator {
    public static int compareVersions(String v1, String v2) {
        if(TextUtils.isEmpty(v1) || TextUtils.isEmpty(v2)) return -1;
        String[] parts1 = v1.split("\\.");
        String[] parts2 = v2.split("\\.");

        if (parts1.length == 1) {
            parts1 = new String[] { parts1[0], "0" }; // 默认次版本号为 0
        }
        if (parts2.length == 1) {
            parts2 = new String[] { parts2[0], "0" }; // 默认次版本号为 0
        }

        // 解析主版本号
        int main1 = Integer.parseInt(parts1[0]);
        int main2 = Integer.parseInt(parts2[0]);

        // 先比较主版本号
        if (main1 != main2) {
            return Integer.compare(main1, main2);
        }

        // 解析次版本号
        int sub1 = Integer.parseInt(parts1[1]);
        int sub2 = Integer.parseInt(parts2[1]);

        // 比较次版本号
        return Integer.compare(sub1, sub2);
    }

    public static int compareAppVersions(String v1, String v2) {
        if(TextUtils.isEmpty(v1) || TextUtils.isEmpty(v2)) return 0;
        try {
            // 去掉前缀 "v"
            v1 = v1.startsWith("v") ? v1.substring(1) : v1;
            v2 = v2.startsWith("v") ? v2.substring(1) : v2;

            String[] parts1 = v1.split("\\.");
            String[] parts2 = v2.split("\\.");

            int length = Math.max(parts1.length, parts2.length);

            for (int i = 0; i < length; i++) {
                int num1 = i < parts1.length ? Integer.parseInt(parts1[i]) : 0;
                int num2 = i < parts2.length ? Integer.parseInt(parts2[i]) : 0;

                if (num1 > num2) return 1;
                if (num1 < num2) return -1;
            }
        }catch (Exception e){

        }
        return 0; // 版本相等
    }
}

